1. Field of the Invention
The present invention relates to computer networks and more particularly to efficiently avoiding transient routing disturbances in link state routing protocols with fragmented link state packets (LSPs) in a computer network.
2. Background Information
A computer network is a geographically distributed collection of nodes interconnected by communication links and segments for transporting data between end nodes, such as personal computers and workstations. Many types of networks are available, with the types ranging from local area networks (LANs) to wide area networks (WANs). LANs typically connect the nodes over dedicated private communications links located in the same general physical location, such as a building or campus. WANs, on the other hand, typically connect geographically dispersed nodes over long-distance communications links, such as common carrier telephone lines, optical lightpaths, synchronous optical networks (SONET), or synchronous digital hierarchy (SDH) links. The Internet is an example of a WAN that connects disparate networks throughout the world, providing global communication between nodes on various networks. The nodes typically communicate over the network by exchanging discrete frames or packets of data according to predefined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP). In this context, a protocol consists of a set of rules defining how the nodes interact with each other. Computer networks may be further interconnected by an intermediate network node, such as a router, to extend the effective “size” of each network.
Since management of interconnected computer networks can prove burdensome, smaller groups of computer networks may be maintained as routing domains or autonomous systems. The networks within an autonomous system (AS) are typically coupled together by conventional “intradomain” routers configured to execute intradomain routing protocols, and are generally subject to a common authority. To improve routing scalability, a service provider (e.g., an ISP) may divide an AS into multiple “areas.” It may be desirable, however, to increase the number of nodes capable of exchanging data; in this case, interdomain routers executing interdomain routing protocols are used to interconnect nodes of the various ASes. Moreover, it may be desirable to interconnect various ASes that are operated under different administrative domains. As used herein, an AS or an area are generally referred to as a “domain,” and a router that interconnects different domains together is generally referred to as a “border router.”
Examples of an intradomain routing protocol, or an interior gateway protocol (IGP), are the Open Shortest Path First (OSPF) routing protocol and the Intermediate-System-to-Intermediate-System (IS-IS) routing protocol. IGPs may be used to perform routing within domains (ASes) by exchanging routing and reachability information among neighboring intradomain routers of the domains. An adjacency is a relationship formed between selected neighboring (peer) routers for the purpose of exchanging routing information messages and abstracting the network topology. The routing information exchanged by IGP peer routers typically includes destination address prefixes, i.e., the portions of destination addresses used by the routing protocol to render routing (“next hop”) decisions. Examples of such destination addresses include IP version 4 (IPv4) and version 6 (IPv6) addresses.
The OSPF and IS-IS protocols are based on link state technology and, therefore, are commonly referred to as link state routing protocols. Link state protocols define the manner with which routing information and network-topology information are exchanged and processed in a domain. This information is generally directed to an intradomain router's local state (e.g., the router's usable interfaces and reachable neighbors or adjacencies). The OSPF protocol is described in RFC 2328, entitled OSPF Version 2, dated April 1998 and the IS-IS protocol used in the context of IP is described in RFC 1195, entitled Use of OSI IS-IS for routing in TCP/IP and Dual Environments, dated December 1990, both of which are hereby incorporated by reference.
A router or, more generally, an intermediate network node often stores its routing information in a routing table maintained and managed by a routing information base (RIB). The routing table is a searchable data structure in which network addresses are mapped to their associated routing information. However, those skilled in the art will understand that the routing table need not be organized as a table, and alternatively may be another type of searchable data structure. Although the intermediate network node's routing table may be configured with a predetermined set of routing information, the node also may dynamically acquire (“learn”) network routing information as it sends and receives data packets. When a packet is received at the intermediate network node, the packet's destination address may be used to identify a routing table entry containing routing information associated with the received packet. Among other things, the packet's routing information indicates the packet's next-hop address.
To ensure that its routing table contains up-to-date routing information, the intermediate network node may cooperate with other intermediate nodes to disseminate routing information representative of the current network topology. For example, suppose the intermediate network node detects that one of its neighboring nodes (i.e., adjacent network nodes) becomes unavailable, e.g., due to a link failure or the neighboring node going “off-line,” etc. In this situation, the intermediate network node can update the routing information stored in its routing table to ensure that data packets are not routed to the unavailable network node. Furthermore, the intermediate node also may communicate this change in network topology to the other intermediate network nodes so they, too, can update their local routing tables and bypass the unavailable node. In this manner, each of the intermediate network nodes becomes “aware” of the change in topology.
Typically, routing information is disseminated among the intermediate network nodes in accordance with a predetermined network communication protocol, such as a link state protocol (e.g., IS-IS, or OSPF). Conventional link state protocols use link state packets (LSPs) for exchanging routing information between interconnected intermediate network nodes (IGP nodes). As used herein, an LSP (or an “IGP Advertisement”) generally describes any message used by a link state IGP routing protocol for communicating routing information among interconnected IGP nodes, i.e., routers and switches (notably, link state routers, or “LSRs”). Operationally, a first IGP node may generate an LSP and “flood” (i.e., transmit) the packet over each of its network interfaces coupled to other IGP nodes. Thereafter, a second IGP node may receive the flooded LSP and update its routing table based on routing information contained in the received LSP. Also, the second IGP node may flood the received LSP over one or more of its network interfaces, except for the interface at which the LSP was received. This flooding process may be repeated until each interconnected IGP node has received the LSP and updated its local routing table.
In practice, each IGP node typically generates and disseminates an LSP whose routing information includes “link states,” e.g., a list of the intermediate node's neighboring network nodes and one or more “cost” values associated with each neighbor. As used herein, a cost value associated with a neighboring node is an arbitrary metric used to determine the relative ease/burden of communicating with that node. For instance, the cost value may be measured in terms of the average time for a packet to reach the neighboring node, the amount of network traffic or available bandwidth over a communication link coupled to the neighboring node, etc.
As noted, LSPs are usually flooded until each IGP node has received an LSP from each of the other interconnected intermediate nodes, which LSP may be stored in a link state database (LSDB). Then, each of the IGP nodes can construct the same “view” of the network topology by aggregating the received lists of neighboring nodes and cost values. To that end, each IGP node may input this received routing information to a “shortest path first” (SPF) calculation that determines the lowest-cost network paths that couple the intermediate node with each of the other network nodes. For example, the Dijkstra algorithm is a conventional technique for performing such a SPF calculation, as described in more detail in Section 12.2.4 of the text book Interconnections Second Edition, by Radia Perlman, published September 1999, which is hereby incorporated by reference as though fully set forth herein. Each IGP node updates the routing information stored in its local routing table based on the results of its SPF calculation. More specifically, the RIB updates the routing table to correlate destination nodes with next-hop interfaces associated with the lowest-cost paths to reach those nodes, as determined by the SPF calculation.
Certain link state routing protocols, such as, e.g., IS-IS in particular, have a limited LSP size in which to advertise the link states of a pertinent network. As the size of the network grows, the ability to place all relevant link state information into an LSP becomes difficult. Accordingly, such link state routing protocols allow for LSP fragmentation, in which the LSP is fragmented or split into multiple smaller packets, each smaller packet (an “LSP fragment”) containing a portion of the overall LSP's link state. Upon is receiving the LSP fragments, an IGP node (e.g., an LSR) uses the information contained within each fragment to create the network topology in its LSDB. Conventionally, each LSP fragment is assigned a fragment number (e.g., fragment 1, fragment 2, etc.) by the originating (advertising) LSR. Once an LSP fragment is received, the receiving LSR replaces the correspondingly numbered fragment with the newly received fragment to update its LSDB. In this way, LSP fragments may be received out of order (e.g., due to network delays, node processing, etc.) and updated accordingly.
One problem associated with LSP fragmentation, however, involves “movement” of link state information from one fragment into another. In other words, a link state that once appeared in a particular fragment may later appear in a different fragment. In particular, as link states change (e.g., links are added as “up” and/or links are removed as “down”), the amount of information that is fragmented within the LSP may also change.
For example, assume six link states, A-F, are to be advertised in an LSP, whose maximum fragment size (i.e., for fragments representing the LSP) may contain three link states each. Those skilled in the art will understand that the LSP may be fragmented accordingly, e.g., into a first fragment with links A, B, and C, and a second fragment with links D, E, and F, which may be advertised into the network. Further assume, for example, that after some time, link C fails (is down), and its state is removed from the LSP, i.e., from the first fragment. Because the first fragment now has two link states, the advertising LSR may move a link state from the second fragment (e.g., link D) to the first fragment (i.e., “fragment wrapping”). Now the first fragment advertises links A, B, and D, and the second fragment advertises links E and F. (Notably, fragment wrapping may also occur when link states are added, as will be understood by those skilled in the art.)
As mentioned above, LSP fragments may be received at an LSR at different times and out of order. As such, the receiving LSR may incorrectly conclude that a link state has been removed, when in fact is has actually only moved to another fragment. For instance, in the example above, in the event the receiving LSR receives, the updated second fragment (i.e., links E and F) prior to the updated first fragment (i.e., links A, B, and D), the receiving LSR may incorrectly update its LSDB to remove a state for link D because it no longer appears in the second fragment. Once the updated first fragment is eventually received, the receiving LSR adjusts its LSDB to correctly reflect that link C is down, and that link D is up.
The incorrect updates to the LSDB may cause transient (or temporary) routing disturbances, such as black holes, micro-loops, or other incorrect routing and associated problems, as will be understood by those skilled in the art. While these disturbances may be short-lived (e.g., sub-second), a goal of network administrators is to achieve the fastest possible network convergence (e.g., less than 100 milliseconds). It is imperative, then, that receiving LSRs update the correct link state information into their LSDBs in order to ensure fast and proper network convergence. There remains a need, therefore, for a technique that avoids transient routing disturbances by efficiently preventing fragment wrapping, thus allowing other LSRs to receive LSP fragments out of order and deterministically conclude link states of the network without incorrectly updating (e.g., removing) a link state.